Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.10.2014, 13:46
Интересующийся
Отправить личное сообщение для 0leg9 Посмотреть профиль Найти все сообщения от 0leg9
 
Регистрация: 10.06.2013
Сообщений: 12

Получить из mysql json строку и преобразовать в js объект
В результате запроса objJS равен undefined. Если раскоментировать строку внутри функции, то objJS становится объектом (в пределах видимости функции). В чем подвох? Мне нужно, чтобы объект был доступен в любом месте кода.

Код js:
var objJS;

$.ajax({          
    type: "POST",
    url: "request.php",
    success: function(data){
        objJS = JSON.parse(data);
        //console.log(objJS);
    }
});

console.log(objJS);

Код php:
$query = mysql_query("SELECT `data` FROM `base`  WHERE `id`='1'");
$stat = mysql_fetch_array($query);
echo $stat['data'];
Ответить с цитированием
  #2 (permalink)  
Старый 18.10.2014, 13:59
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

$.post('request.php', function (result) {
    console.log(result)
}, 'json');

в пыхе
echo json_encode($stat['data']);
die;
Ответить с цитированием
  #3 (permalink)  
Старый 18.10.2014, 14:07
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Порядок выполнения твоего кода:
//1
var objJS;
 
$.ajax({         
    type: "POST",
    url: "request.php",
    success: function(data){
        //3
        objJS = JSON.parse(data);
        //console.log(objJS);
    }
});
//2
console.log(objJS);
Ответить с цитированием
  #4 (permalink)  
Старый 18.10.2014, 14:20
Интересующийся
Отправить личное сообщение для 0leg9 Посмотреть профиль Найти все сообщения от 0leg9
 
Регистрация: 10.06.2013
Сообщений: 12

Сообщение от Poznakomlus Посмотреть сообщение
$.post('request.php', function (result) {
    console.log(result)
}, 'json');

в пыхе
echo json_encode($stat['data']);
die;
Попробовал. Ответ undefined.
$.post('request.php', function (result) {
    objJS = result;
}, 'json');

console.log(objJS);
Ответить с цитированием
  #5 (permalink)  
Старый 18.10.2014, 14:21
Интересующийся
Отправить личное сообщение для 0leg9 Посмотреть профиль Найти все сообщения от 0leg9
 
Регистрация: 10.06.2013
Сообщений: 12

Сообщение от Erolast Посмотреть сообщение
Порядок выполнения твоего кода:
//1
var objJS;
 
$.ajax({         
    type: "POST",
    url: "request.php",
    success: function(data){
        //3
        objJS = JSON.parse(data);
        //console.log(objJS);
    }
});
//2
console.log(objJS);
В таком порядке тоже undefined
Ответить с цитированием
  #6 (permalink)  
Старый 18.10.2014, 14:33
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Ох. Я тебе расписал, в каком порядке код выполняется. Сперва ты объявил переменную objJS в первой строке, затем приказал браузеру выполнить запрос и указал, что сделать, когда придет ответ, затем вывел в консоль значение objJS, которое равно undefined, и только затем приходит ответ, выполняется коллбек и в objJS записывается распаршенная информация.
Ответить с цитированием
  #7 (permalink)  
Старый 18.10.2014, 14:48
Интересующийся
Отправить личное сообщение для 0leg9 Посмотреть профиль Найти все сообщения от 0leg9
 
Регистрация: 10.06.2013
Сообщений: 12

Сообщение от Erolast Посмотреть сообщение
Ох. Я тебе расписал, в каком порядке код выполняется. Сперва ты объявил переменную objJS в первой строке, затем приказал браузеру выполнить запрос и указал, что сделать, когда придет ответ, затем вывел в консоль значение objJS, которое равно undefined, и только затем приходит ответ, выполняется коллбек и в objJS записывается распаршенная информация.
Спасибо за разъеснение. С использованием async: false все заработало как нужно.
Ответить с цитированием
  #8 (permalink)  
Старый 18.10.2014, 15:21
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Синхронный запрос заблочит любые действия на время его выполнения, так что допустим он только на этапе инициализации страницы, и то не всегда. Выполняй все необходимые операции в коллбеке.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не выходит получить объект из функции barsix Общие вопросы Javascript 3 07.08.2014 14:32
Как JS сообщить о JSON? mcpro jQuery 2 16.12.2009 15:27
Вывод JS значения в одну строку в HTML velo Общие вопросы Javascript 7 15.12.2009 03:57
Что выбрать XML или JSON для передачи Ajax - ом из PHP в JS Gozar Общие вопросы Javascript 20 16.08.2009 23:36
Как создать строку JSON с переменными? Артем AJAX и COMET 4 01.11.2008 12:12